5a4564681c79a445d11d96c4c56fada7d90e9149,portal-impl/src/com/liferay/portlet/bookmarks/util/BookmarksIndexer.java,BookmarksIndexer,reindexEntries,#number#number#number#,196
Before Change
protected void reindexEntries(long companyId, long groupId, long folderId)
throws Exception {
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(
BookmarksEntry.class, PACLClassLoaderUtil.getPortalClassLoader());
Projection minEntryIdProjection = ProjectionFactoryUtil.min("entryId");
Projection maxEntryIdProjection = ProjectionFactoryUtil.max("entryId");
ProjectionList projectionList = ProjectionFactoryUtil.projectionList();
projectionList.add(minEntryIdProjection);
projectionList.add(maxEntryIdProjection);
dynamicQuery.setProjection(projectionList);
addReindexCriteria(dynamicQuery, groupId, folderId);
List<Object[]> results = BookmarksEntryLocalServiceUtil.dynamicQuery(
dynamicQuery);
Object[] minAndMaxEntryIds = results.get(0);
if ((minAndMaxEntryIds[0] == null) || (minAndMaxEntryIds[1] == null)) {
return;
}
long minEntryId = (Long)minAndMaxEntryIds[0];
long maxEntryId = (Long)minAndMaxEntryIds[1];
long startEntryId = minEntryId;
long endEntryId = startEntryId + DEFAULT_INTERVAL;
while (startEntryId <= maxEntryId) {
reindexEntries(
companyId, groupId, folderId, startEntryId, endEntryId);
startEntryId = endEntryId;
endEntryId += DEFAULT_INTERVAL;
}
}
After Change
final Collection<Document> documents = new ArrayList<Document>();
ActionableDynamicQuery actionableDynamicQuery =
new BaseActionableDynamicQuery() {
@Override
protected void addCriteria(DynamicQuery dynamicQuery) {
Property property = PropertyFactoryUtil.forName("folderId");
dynamicQuery.add(property.eq(folderId));
}
@Override
protected void performAction(Object object) throws PortalException {
BookmarksEntry entry = (BookmarksEntry)object;
Document document = getDocument(entry);
documents.add(document);
}
};
actionableDynamicQuery.setBaseLocalService(
BookmarksEntryLocalServiceUtil.getService());
actionableDynamicQuery.setClass(BookmarksEntry.class);
actionableDynamicQuery.setClassLoader(
PACLClassLoaderUtil.getPortalClassLoader());
actionableDynamicQuery.setGroupId(groupId);
actionableDynamicQuery.setPrimaryKeyPropertyName("entryId");
actionableDynamicQuery.performActions();
SearchEngineUtil.updateDocuments(
getSearchEngineId(), companyId, documents);